package com.ioi.servlet.weichat;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ioi.base.R;
import com.ioi.weixin.WeixinApi;
import com.ioi.weixin.impl.WeixinApiImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 微信登录接口
 *
 * @author LILIBO
 * @since 2024/5/24
 */
@WebServlet("/weichat/login")
public class WeichatLoginServlet extends HttpServlet {

    // 引入业务逻辑层
    private final WeixinApi weixinApi = new WeixinApiImpl();

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获得请求参数（已由全局过滤器统一处理参数到作用域）
        String jsonQ = (String) request.getAttribute("jsonQ");

        // 解析JSON格式的请求数据
        JSONObject json = JSONObject.parseObject(jsonQ);
        String code = json.getString("jsCode");

        // 微信小程序获取登录后的session信息
        JSONObject jsonWeixin = weixinApi.jsCode2SessionInfo(code);
        Object openid = jsonWeixin.get("openid");
        Object session_key = jsonWeixin.get("session_key");

        System.out.println("openid: " + openid);
        System.out.println("session_key: " + session_key);

        // 调用Service层，通过openid判断数据库中是否有该用户

        // if 如果有就更新
        // else 就新增用户（id自增，openid写入）

        // 1 xxx01
        int res = 1; // wxService.addUser(openid, session_key);
        R result = null;
        if (res == 1) {
            result = R.success(jsonWeixin);
        } else {
            result = R.failure();
        }

        // 将响应结果设置到作用域（由全局过滤器统一处理响应结果）
        request.setAttribute("jsonR", JSON.toJSONString(result));
    }

}
